Summary
Django Authentication System
Django একটি শক্তিশালী বিল্ট-ইন authentication system প্রদান করে যা নিরাপত্তা বৈশিষ্ট্য যেমন ইউজার সাইন-ইন, সাইন-আউট, রেজিস্ট্রেশন, পাসওয়ার্ড ম্যানেজমেন্ট এবং ইউজার পারমিশন অন্তর্ভুক্ত করে। এতে প্রমাণীকরণ (authentication) এবং অনুমোদন (authorization) সহজেই পরিচালনা করতে পারেন।
মূল বৈশিষ্ট্যসমূহ
- User Model: Django ডিফল্ট ইউজার মডেল প্রদান করে যা ইউজারের তথ্য সংরক্ষণ করে।
- Login/Logout: Django এর বিল্ট-ইন ভিউ এবং ফর্মস ব্যবহার করে ইউজার লগইন এবং লগআউট করা যায়।
- Password Management: পাসওয়ার্ডের নিরাপত্তা নিশ্চিত করতে শক্তিশালী পাসওয়ার্ড হ্যাশিং সিস্টেম এবং পাসওয়ার্ড পরিবর্তন ও রিসেট করার সুবিধা প্রদান করে।
- Permissions and Groups: ব্যবহারকারীদের নির্দিষ্ট পারমিশন এবং গোষ্ঠীভুক্ত করতে সাহায্য করে।
- Authentication Views: লগইন, লগআউট এবং পাসওয়ার্ড পরিবর্তন ও রিসেট করার জন্য প্রয়োজনীয় ভিউ প্রদান করে।
মডেল এবং কার্যক্রম
- User Model: ডিফল্ট ইউজার মডেল ব্যবহার করে বা কাস্টম মডেল তৈরি করে ইউজারের তথ্য পরিচালনা করতে হবে।
- Login এবং Logout: authenticate() এবং login() ফাংশন ব্যবহার করে ইউজার লগইন এবং logout() ফাংশন দিয়েLogout করা যায়।
- Password Management: ডিফল্ট ভিউ password_change এবং password_reset ফিচার সহ পাসওয়ার্ড পরিচালনা করা সম্ভব।
- Permissions এবং Groups: Permission এবং Group মডেল ব্যবহার করে ইউজারদের পারমিশন এবং গ্রুপ প্রদান করা যায়।
সারাংশ: Django এর বিল্ট-ইন authentication সিস্টেমটি ইউজার ম্যানেজমেন্টের জন্য একটি সম্পূর্ণ সমাধান প্রদান করে এবং নিরাপদ কাস্টমাইজড ইউজার ম্যানেজমেন্টের সুবিধা দেয়।
Django একটি শক্তিশালী বিল্ট-ইন authentication system প্রদান করে যা ইউজার সাইন-ইন, সাইন-আউট, রেজিস্ট্রেশন, পাসওয়ার্ড ম্যানেজমেন্ট এবং ইউজার পারমিশনসহ একাধিক নিরাপত্তা বৈশিষ্ট্য প্রদান করে। Django এর authentication সিস্টেম ব্যবহারের মাধ্যমে আপনি সহজেই ইউজারদের প্রমাণীকরণ (authentication) এবং অনুমোদন (authorization) পরিচালনা করতে পারবেন।
এটি django.contrib.auth অ্যাপ্লিকেশন দ্বারা পরিচালিত হয়, যা Django প্রজেক্টে ডিফল্টভাবে অন্তর্ভুক্ত থাকে।
Django Authentication সিস্টেমের প্রধান বৈশিষ্ট্যসমূহ
- User Model: Django একটি ডিফল্ট ইউজার মডেল (User model) প্রদান করে যা ইউজারের তথ্য (যেমন ইউজারনেম, পাসওয়ার্ড, ইমেইল, ইত্যাদি) সংরক্ষণ করে।
- Login/Logout: Django এর বিল্ট-ইন ভিউ এবং ফর্মস ব্যবহার করে ইউজার লগইন এবং লগআউট করা যায়।
- Password Management: Django পাসওয়ার্ডের নিরাপত্তা নিশ্চিত করতে শক্তিশালী পাসওয়ার্ড হ্যাশিং সিস্টেম এবং পাসওয়ার্ড পরিবর্তন ও রিসেট করার সুবিধা প্রদান করে।
- Permissions and Groups: Django ব্যবহারকারীদের নির্দিষ্ট পারমিশন প্রদান করে এবং ব্যবহারকারীদের গোষ্ঠীভুক্ত করতে সাহায্য করে।
- Authentication Views: Django স্বয়ংক্রিয়ভাবে লগইন, লগআউট, পাসওয়ার্ড পরিবর্তন এবং রিসেট করার জন্য প্রয়োজনীয় ভিউ প্রদান করে।
১. User Model
Django এর User মডেলটি ইউজারের প্রাথমিক তথ্য (যেমন ইউজারনেম, ইমেইল, পাসওয়ার্ড) ধারণ করে। আপনি এই ডিফল্ট মডেলটি ব্যবহার করতে পারেন অথবা যদি আপনার আরও কাস্টম ফিল্ড প্রয়োজন হয় তবে এটি এক্সটেন্ড (extend) করতে পারেন।
ডিফল্ট User মডেল
from django.contrib.auth.models import User
# Creating a user instance
user = User.objects.create_user('john', 'john@example.com', 'password123')
# Creating a superuser (admin user)
admin = User.objects.create_superuser('admin', 'admin@example.com', 'adminpassword')
এখানে create_user() একটি সাধারণ ইউজার তৈরি করে, আর create_superuser() অ্যাডমিন ইউজার তৈরি করে যার সুপার অ্যাডমিন পারমিশন থাকে।
কাস্টম ইউজার মডেল
যদি আপনার প্রয়োজনে অতিরিক্ত ফিল্ড যোগ করার প্রয়োজন হয়, তবে Django এ কাস্টম ইউজার মডেল তৈরি করা সম্ভব। এই ক্ষেত্রে, আপনি মডেলটি AbstractBaseUser এবং BaseUserManager এর উপর ভিত্তি করে তৈরি করতে পারেন।
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models
class CustomUserManager(BaseUserManager):
def create_user(self, email, username, password=None):
if not email:
raise ValueError('The Email field must be set')
user = self.model(email=email, username=username)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, username, password=None):
user = self.create_user(email, username, password)
user.is_admin = True
user.save(using=self._db)
return user
class CustomUser(AbstractBaseUser):
email = models.EmailField(unique=True)
username = models.CharField(max_length=30, unique=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = CustomUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
def __str__(self):
return self.username
এই কাস্টম ইউজার মডেলটি ব্যবহার করতে, আপনার settings.py ফাইলে AUTH_USER_MODEL এর মাধ্যমে কাস্টম মডেলটি নির্দেশ করতে হবে:
AUTH_USER_MODEL = 'myapp.CustomUser'
২. Login এবং Logout
Django এর বিল্ট-ইন login এবং logout ভিউ ফাংশন ব্যবহার করে ইউজারের লগইন এবং লগআউট পরিচালনা করা যায়।
Login
from django.contrib.auth import authenticate, login
def user_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
return HttpResponse('Invalid login credentials')
return render(request, 'login.html')
এখানে authenticate() ফাংশন ব্যবহার করে ইউজারের ক্রেডেনশিয়াল যাচাই করা হয়, এবং login() ফাংশন ব্যবহার করে ইউজারকে লগইন করা হয়।
Logout
from django.contrib.auth import logout
def user_logout(request):
logout(request)
return redirect('home')
এই কোডে logout() ফাংশনটি ব্যবহার করে ইউজারকে লগআউট করা হয়।
৩. Password Management
Django স্বয়ংক্রিয়ভাবে পাসওয়ার্ডের হ্যাশিং এবং পাসওয়ার্ড রিসেট করার সিস্টেম প্রদান করে।
Password Change
Django একটি ডিফল্ট ভিউ password_change প্রদান করে, যা ইউজারদের পাসওয়ার্ড পরিবর্তন করতে সাহায্য করে।
from django.contrib.auth import views as auth_views
urlpatterns = [
path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
]
Password Reset
আপনি পাসওয়ার্ড রিসেট ফিচারটি ব্যবহার করে ইউজারদের তাদের পাসওয়ার্ড পুনরুদ্ধার করতে পারেন। Django স্বয়ংক্রিয়ভাবে পাসওয়ার্ড রিসেট করার জন্য একটি লিঙ্ক পাঠায় ইমেইল মারফত।
from django.contrib.auth import views as auth_views
urlpatterns = [
path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]
এখানে, বিভিন্ন ভিউ ফাংশন ইউজারের পাসওয়ার্ড রিসেট করার পুরো প্রক্রিয়া পরিচালনা করে।
৪. Permissions এবং Groups
Django এর permissions ব্যবহারের মাধ্যমে আপনি ইউজারদের বিভিন্ন রোল বা পারমিশন প্রদান করতে পারেন, যা তাদের কনটেন্ট অ্যাক্সেসের স্তর নির্ধারণ করে। এছাড়া Groups ব্যবহার করে আপনি একই পারমিশনসমূহ একাধিক ইউজারের মধ্যে ভাগ করতে পারেন।
Permissions উদাহরণ:
from django.contrib.auth.models import Permission
# Creating a custom permission
permission = Permission.objects.create(codename='can_view_reports', name='Can View Reports')
user.user_permissions.add(permission)
Groups উদাহরণ:
from django.contrib.auth.models import Group
# Creating a group
group = Group.objects.create(name='Managers')
group.permissions.add(permission) # Add permissions to the group
user.groups.add(group) # Assign the group to the user
এভাবে, আপনি ইউজারদের সঠিক পারমিশন এবং গ্রুপের মাধ্যমে অ্যাপ্লিকেশনটির নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল সহজে পরিচালনা করতে পারেন।
সারাংশ
Django এর বিল্ট-ইন authentication সিস্টেমটি ইউজার ম্যানেজমেন্ট এবং সিকিউরিটি ফিচারগুলির একটি সম্পূর্ণ সমাধান প্রদান করে, যেমন ইউজার লগইন, লগআউট, পাসওয়ার্ড রিসেট এবং ম্যানেজমেন্ট, পারমিশন এবং গ্রুপ কন্ট্রোল। এটি আপনাকে নিরাপদ এবং কাস্টমাইজড ইউজার ম্যানেজমেন্ট প্রদান করার জন্য একটি শক্তিশালী প্ল্যাটফর্ম সরবরাহ করে।
Read more